package planet.util;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;

import planet.comun.Util;

public class ServletCapturaImagenReg1 extends HttpServlet{
	
    void depura(String cadena)
    {
        System.out.println("mensaje >>" + cadena);
    }
    
    public boolean procesaFicheros(HttpServletRequest req) {
    	File fichero =null;
    	try {
    		

            String so = System.getProperty("os.name");
            String rutaRaiz="/temp/";
                      
            if(so.contains("Windows"))
            	rutaRaiz="c:\\tmp\\";
            else
            	rutaRaiz="/tmp/";
        	HttpSession session=req.getSession(true);
        	
            // construimos el objeto que es capaz de parsear la pericion
            DiskFileUpload fu = new DiskFileUpload();

            // maximo numero de bytes
            fu.setSizeMax(1024*1024); // 512 K

            depura("Ponemos el tamano maximo");
            // tamano por encima del cual los ficheros son escritos directamente en disco
            fu.setSizeThreshold(4096);

            fu.setRepositoryPath(rutaRaiz);
            // directorio en el que se escribiran los ficheros con tamano superior al soportado en memoria
            //fu.setRepositoryPath("c:/Windows");
            
            // ordenamos procesar los ficheros
            List fileItems = fu.parseRequest(req);

            if(fileItems == null)
            {
                depura("La lista es nula");
//                return false;
            }

            // Iteramos por cada fichero
	    Iterator i = fileItems.iterator();
            FileItem actual = null;
            depura("estamos en la iteracion");

            while (i.hasNext())
            {
                actual = (FileItem)i.next();
                String fileName = Util.getSimpleName(actual.getName());

                // construimos un objeto file para recuperar el trayecto completo
                fichero = new File(fileName);
                depura("El nombre del fichero es " + Util.getSimpleName(fichero.getName()));

                session.setAttribute("ficherox",Util.getSimpleName(fichero.getName()));
     	    	depura("mando el atributo Ss");
                
                // nos quedamos solo con el nombre y descartamos el path
                fichero = new  File(rutaRaiz + Util.getSimpleName(fichero.getName()));
                //fichero = new  File("c:\\Windows\\" + Util.getSimpleName(fichero.getName()));
                // escribimos el fichero colgando del nuevo path
                actual.write(fichero);
            }

        }
        catch(Exception e) {
            depura("Error de Aplicacion " + e.getMessage());
            return false;
        }

        return true;
    }

    public void regresar(
			HttpServletRequest request,
			HttpServletResponse response)
			throws ServletException, IOException {
    	
		try {
			/*/*  --*/
			depura("regresara");
			getServletContext().getRequestDispatcher("/cineplanet/util/frm_cineplanet_load.jsp").forward(request,response);
		} catch (Exception e) {
			
			System.out.println("umm:"+e.getMessage());
		}
    	
    	
    	
    }

    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    	
    	procesaFicheros(request);
        regresar(request, response);
    
    }
}
